{{tag>php serveur programmation}}

====== Composer ======

Le logiciel **Composer** est un gestionnaire de dépendances sous licence libre ([[wpfr>Licence_publique_g%C3%A9n%C3%A9rale_GNU|GPL v3]]), écrit en PHP. Il permet à ses utilisateurs de déclarer et d'installer les bibliothèques dont le projet principal a besoin. Cela évite aux développeurs d'avoir à distribuer leurs projets avec toutes les bibliothèques qu'ils utilisent. On peut donc le voir comme un équivalent de [[:APT]], pour les projets écrits en [[:PHP]].

Le dépôt principal de Composer est le site [[https://packagist.org/|Packagist]]. Il est très simple de publier ses projets sur cette plateforme, et elle rassemble une communauté particulièrement importante.

===== Pré-requis =====

  * Avoir [[:php#installation|installé PHP]] en ligne de commande.
<note tip>Sur Ubuntu le paquet [[apt>php-cli]] est enincipe installé par défaut avec n'importe quelle [[:php#installation|installation de PHP]], ou avec la pilhhjj yggve [[:LAMP]].

Donc si vous utilisez déjà PHP vous n'avez très probablement rien de plus à installer.</note>

===== Installation =====

Pour installer **Composer** en suivant les [[https://getcomposer.org/download/|indications de la documentation officielle]], ouvrez un terminal et copiez-collez les lignes suivantes :

<code>php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
php -r "unlink('composer-setup.php');"</code>

Vous pouvez désormais utiliser Composer :
<code>composer</code>

===== Utilisation =====

==== Installer un projet existant ====

Pour installer un projet existant, la commande est la suivante :
<code>composer create-project [le nom du projet sur packagist] [le répertoire dans lequel l'installer]</code>
Remplacez évidemment ''[le nom du projet sur packagist]'' et ''[le répertoire dans lequel l'installer]'' :
  * le nom du projet sur [[https://packagist.org/|Packagist]] est de la forme ''auteur/projet''
  * le répertoire dans lequel l'installer peut être un nouveau répertoire, Composer le créera automatiquement.

==== Déclarer des dépendances à un projet personnel ====

Composer fournit une méthode didactique pour la création d'un projet.
Placez vous à la racine de votre projet puis lancez la commande :
<code>composer init</code>
Une série de questions vous seront posées au sujet de votre projet.

Ceci aura pour effet de créer un fichier ''composer.json'' contenant toutes les informations de votre projet (ce qui peut être utile dans le cadre d'une éventuelle publication sur [[https://packagist.org/|Packagist]] ;-)), dont surtout ses dépendances.

Pour chaque dépendance vous pouvez choisir de spécifier finement les versions à utiliser. 

==== Installer des dépendances ====

Avec les fichiers d'un projet entre les mains, dont le fichier ''composer.json'', la commande pour déployer les dépendances est la suivante :
<code>composer install</code>
Cela aura pour effet de créer un répertoire ''vendor/'' dans lequel seront déployées toutes les bibliothèques PHP.

Si il s'agit de votre projet, il n'est donc pas nécessaire de le distribuer avec ce répertoire ''vendor/''.

===== Voir aussi =====

  * **(en)** [[https://getcomposer.org/]]
  * [[http://openclassrooms.com/courses/developpez-votre-site-web-avec-le-framework-symfony2/installer-un-bundle-grace-a-composer]]
  * [[https://www.grafikart.fr/tutoriels/php/composer-480|Un très bon tutoriel]], accompagné d'[[https://www.youtube.com/watch?v=EBZ1owgiSSQ|une vidéo]] sur le site de Grafikart.

----
//Contributeurs : [[:utilisateurs:d10g3n]], [[:utilisateurs:krodelabestiole]]//